'''
Created on 5 dec. 2014

@author: Damien Torond et Geoffrey Sentost
Module Contrat
'''
import time,datetime

'''
import des modules time et datetime.
'''

class Contrat:
        
    '''
    La classe Contrat met en place les contrats d'abonnements pour les clients avec un
    delai pour chacun d'eux.
    '''

    def __init__(self, abonnement, dateDebut = None, dateFin = None, estEnCours = None):
        '''
        Attributs:
            - abonnement qui cree un abonnement pour le client.
            - dateDebut correspond au debut du contrat.
            - dateFin correspond a la fin du contrat.
            - estEnCours verifie par un booleen si le contrat est toujours valide.
        
        On met les dates a jour avec celles en temps reel, d'aujourd'hui, grace aux modules time
        et datetime. Puis on verifie la date pour decider si le contrat est en cours ou non.
        '''
        self.abonnement = abonnement
        if dateDebut and dateFin and estEnCours:
            self.dateDebut = dateDebut
            self.dateFin = dateFin
            self.estEnCours = estEnCours
        else :        
            self.dateDebut = datetime.date.today()
            self.dateFin = datetime.date.today() + datetime.timedelta(weeks=55)
        
        if self.dateFin > datetime.date.today():  
            self.estEnCours = True
        else :
            self.estEnCours = False
    
        
    def creerContrat(self):    
        '''
        Methode : On affiche le contrat et sa duree.
        '''    
        print("Le contrat a éte crée le " + self.dateDebut + "jusqu'au" + self.dateFin + "\n")
    
        
    def rompreContrat(self):
        '''
        Methode : on suprime le contrat en mettant la date d'aujourd'hui dans l'attribut dateFin.
        '''
        self.dateFin = datetime.date.today()
        
    
    def getDateDebut(self):
        '''
        Methode : accesseur de l'attribut dateDebut qui retourne celui-ci.
        '''
        return self.dateDebut
    
    def getDateFin(self):
        '''
        Methode : accesseur de l'attribut dateFin qui retourne celui-ci.
        '''
        return self.dateFin
    
        
        